package leetcode.part1;

import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

public class S13 {
    private static final Map<String,Integer> map=new HashMap<>();
    static {
        map.put("I",1);
        map.put("V",5);
        map.put("X",10);
        map.put("L",50);
        map.put("C",100);
        map.put("D",500);
        map.put("M",1000);
        map.put("IV",4);
        map.put("IX",9);
        map.put("XL",40);
        map.put("XC",90);
        map.put("CD",400);
        map.put("CM",900);
    }
    public int romanToInt(String s) {
        String[] strings = s.split("");
        int len=strings.length;
        int count=0;
        int index=0;
        while (index<len){
            if (index+1<len){
                // 尝试优先获取特殊值
                String tmp=strings[index]+strings[index+1];
                Integer val = map.getOrDefault(tmp, 0);
                // 如果可以获取到特殊值，就将index移动，跳过组合
                if (val!=0){
                    index+=2;
                    count+=val;
                    continue;
                }
            }
            Integer val = map.getOrDefault(strings[index], 0);
            count+=val;
            index++;
        }
        return count;
    }
    @Test
    public void test(){
        String s="MCMXCIV";
        System.out.println(romanToInt(s));
    }
}
